package pe.com.tma.model;

import java.io.Serializable;

import java.sql.Timestamp;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@NamedQueries({
  @NamedQuery(name = "Usuario.findAll", query = "select o from Usuario o")
})
@Table(name = "\"usuario\"")
public class Usuario implements Serializable {
    @Column(name="FechaNacimiento")
    private Timestamp fechaNacimiento;
    @Column(name="apeMaterno")
    private String apeMaterno;
    @Column(name="apePaterno")
    private String apePaterno;
    @Column(name="direccion")
    private String direccion;
    @Column(name="estado")
    private String estado;
    @Id
    @Column(name="idCliente", nullable = false)
    private Integer idCliente;
    @Column(name="logueo")
    private String logueo;
    @Column(name="nombres")
    private String nombres;
    @Column(name="numDocumento")
    private String numDocumento;
    @Column(name="password")
    private String password;
    @Column(name="razonSocial")
    private String razonSocial;
    @Column(name="tipoPersona")
    private Integer tipoPersona;
    @Column(name="tipoUsuario")
    private String tipoUsuario;
    @OneToMany(mappedBy = "usuario")
    private List<Orden> ordenList;
    @OneToMany(mappedBy = "usuario")
    private List<Movimientoctacliente> movimientoctaclienteList;
    @ManyToOne
    @JoinColumn(name = "Representante")
    private Usuario usuario;
    @OneToMany(mappedBy = "usuario")
    private List<Usuario> usuarioList;
    @OneToMany(mappedBy = "usuario")
    private List<Cartera> carteraList;
    @OneToMany(mappedBy = "usuario")
    private List<Poliza> polizaList;
    @OneToMany(mappedBy = "usuario")
    private List<Deposito> depositoList;

    public Usuario() {
    }

    public Usuario(String apeMaterno, String apePaterno, String direccion,
                   String estado, Timestamp fechaNacimiento, Integer idCliente,
                   String logueo, String nombres, String numDocumento,
                   String password, String razonSocial, Usuario usuario,
                   Integer tipoPersona, String tipoUsuario) {
        this.apeMaterno = apeMaterno;
        this.apePaterno = apePaterno;
        this.direccion = direccion;
        this.estado = estado;
        this.fechaNacimiento = fechaNacimiento;
        this.idCliente = idCliente;
        this.logueo = logueo;
        this.nombres = nombres;
        this.numDocumento = numDocumento;
        this.password = password;
        this.razonSocial = razonSocial;
        this.usuario = usuario;
        this.tipoPersona = tipoPersona;
        this.tipoUsuario = tipoUsuario;
    }

    public Timestamp getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Timestamp fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }


    public String getApeMaterno() {
        return apeMaterno;
    }

    public void setApeMaterno(String apeMaterno) {
        this.apeMaterno = apeMaterno;
    }

    public String getApePaterno() {
        return apePaterno;
    }

    public void setApePaterno(String apePaterno) {
        this.apePaterno = apePaterno;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Integer getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(Integer idCliente) {
        this.idCliente = idCliente;
    }

    public String getLogueo() {
        return logueo;
    }

    public void setLogueo(String logueo) {
        this.logueo = logueo;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getNumDocumento() {
        return numDocumento;
    }

    public void setNumDocumento(String numDocumento) {
        this.numDocumento = numDocumento;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public Integer getTipoPersona() {
        return tipoPersona;
    }

    public void setTipoPersona(Integer tipoPersona) {
        this.tipoPersona = tipoPersona;
    }

    public String getTipoUsuario() {
        return tipoUsuario;
    }

    public void setTipoUsuario(String tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    public List<Orden> getOrdenList() {
        return ordenList;
    }

    public void setOrdenList(List<Orden> ordenList) {
        this.ordenList = ordenList;
    }

    public Orden addOrden(Orden orden) {
        getOrdenList().add(orden);
        orden.setUsuario(this);
        return orden;
    }

    public Orden removeOrden(Orden orden) {
        getOrdenList().remove(orden);
        orden.setUsuario(null);
        return orden;
    }

    public List<Movimientoctacliente> getMovimientoctaclienteList() {
        return movimientoctaclienteList;
    }

    public void setMovimientoctaclienteList(List<Movimientoctacliente> movimientoctaclienteList) {
        this.movimientoctaclienteList = movimientoctaclienteList;
    }

    public Movimientoctacliente addMovimientoctacliente(Movimientoctacliente movimientoctacliente) {
        getMovimientoctaclienteList().add(movimientoctacliente);
        movimientoctacliente.setUsuario(this);
        return movimientoctacliente;
    }

    public Movimientoctacliente removeMovimientoctacliente(Movimientoctacliente movimientoctacliente) {
        getMovimientoctaclienteList().remove(movimientoctacliente);
        movimientoctacliente.setUsuario(null);
        return movimientoctacliente;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public List<Usuario> getUsuarioList() {
        return usuarioList;
    }

    public void setUsuarioList(List<Usuario> usuarioList) {
        this.usuarioList = usuarioList;
    }

    public Usuario addUsuario(Usuario usuario) {
        getUsuarioList().add(usuario);
        usuario.setUsuario(this);
        return usuario;
    }

    public Usuario removeUsuario(Usuario usuario) {
        getUsuarioList().remove(usuario);
        usuario.setUsuario(null);
        return usuario;
    }

    public List<Cartera> getCarteraList() {
        return carteraList;
    }

    public void setCarteraList(List<Cartera> carteraList) {
        this.carteraList = carteraList;
    }

    public Cartera addCartera(Cartera cartera) {
        getCarteraList().add(cartera);
        cartera.setUsuario(this);
        return cartera;
    }

    public Cartera removeCartera(Cartera cartera) {
        getCarteraList().remove(cartera);
        cartera.setUsuario(null);
        return cartera;
    }

    public List<Poliza> getPolizaList() {
        return polizaList;
    }

    public void setPolizaList(List<Poliza> polizaList) {
        this.polizaList = polizaList;
    }

    public Poliza addPoliza(Poliza poliza) {
        getPolizaList().add(poliza);
        poliza.setUsuario(this);
        return poliza;
    }

    public Poliza removePoliza(Poliza poliza) {
        getPolizaList().remove(poliza);
        poliza.setUsuario(null);
        return poliza;
    }

    public List<Deposito> getDepositoList() {
        return depositoList;
    }

    public void setDepositoList(List<Deposito> depositoList) {
        this.depositoList = depositoList;
    }

    public Deposito addDeposito(Deposito deposito) {
        getDepositoList().add(deposito);
        deposito.setUsuario(this);
        return deposito;
    }

    public Deposito removeDeposito(Deposito deposito) {
        getDepositoList().remove(deposito);
        deposito.setUsuario(null);
        return deposito;
    }
}
